###############################################
# ORDER OF THE SACRED MAGDALENE
# MAGDALENE SUCCESSION EVENTS
#
# ggsm.600 = calculate Grace cost and confirm reform
# ggsm.601 = annual hidden maintenance
# ggsm.602 = new-holder repair relay
# ggsm.603 = delayed post-succession primary-title repair
#
# Uses long_character_event throughout for compatibility
# with Even Bigger Text Boxes.
###############################################

namespace = ggsm


###############################################
# 600 - ESTABLISH MAGDALENE SUCCESSION
###############################################

long_character_event = {
    id = ggsm.600
    desc = ggsm.600.desc
    picture = GFX_event_ggsm_scripture_study
    border = GFX_event_long_frame_religion
    is_triggered_only = yes

    trigger = {
        society_member_of = ggsm_order_sacred_magdalene
        society_rank >= 4
        is_landed = yes

        OR = {
            government = feudal_government
            government = tribal_government
        }

        NOT = {
            has_dynasty_flag = ggsm_magdalene_succession_established
        }

        NOT = {
            any_dynasty_member_even_if_dead = {
                has_character_flag = ggsm_magdalene_succession_enacted
            }
        }
    }

    immediate = {
        # Store 50% of current Grace as a negative local variable.
        export_to_variable = {
            which = local_ggsm_magdalene_succession_grace_cost
            value = society_currency
        }

        multiply_variable = {
            which = local_ggsm_magdalene_succession_grace_cost
            value = -0.50
        }
    }

    option = {
        name = ggsm.600.a

        custom_tooltip = {
            text = ggsm_magdalene_succession_cost_tt
        }

        custom_tooltip = {
            text = ggsm_magdalene_succession_effect_tt
        }

        # Pay exactly 50% of current Grace.
        # Explicit society scope prevents ambiguity.
        change_society_currency = {
            society = ggsm_order_sacred_magdalene
            value = local_ggsm_magdalene_succession_grace_cost
            scaled_by_influence = no
        }

        set_character_flag = ggsm_magdalene_succession_enacted
        set_dynasty_flag = ggsm_magdalene_succession_established


        # Explicitly establish the law on the primary title first. any_demesne_title
        # any_demesne_title also includes it, but this prevents the primary title from
        # being left behind by title-specific law validation behavior.
        primary_title = {
            if = {
                limit = {
                    OR = {
                        tier = COUNT
                        tier = DUKE
                        tier = KING
                        tier = EMPEROR
                    }
                }

                succession = primogeniture
                gender_succ = enatic
                law_set_allow_matrilineal_marriage = yes

                if = {
                    limit = {
                        NOT = {
                            has_law = succ_magdalene_primogeniture
                        }
                    }

                    add_law = {
                        law = succ_magdalene_primogeniture
                        cooldown = no
                        opinion_effect = yes
                    }
                }

                set_title_flag = ggsm_magdalene_succession_established
            }
        }

        # Apply Magdalene Primogeniture to every county-or-higher
        # title personally held by the ruler.
        any_demesne_title = {
            limit = {
                NOT = {
                    is_primary_holder_title = yes
                }

                OR = {
                    tier = COUNT
                    tier = DUKE
                    tier = KING
                    tier = EMPEROR
                }
            }

            if = {
                limit = {
                    NOT = {
                        has_law = succ_magdalene_primogeniture
                    }
                }

                add_law = {
                    law = succ_magdalene_primogeniture
                    cooldown = no
                    opinion_effect = yes
                }

                # Enforce the actual title succession mechanics directly.
                # This is intentionally separate from add_law so a title-side
                # law-potential quirk cannot leave one held title unsynchronized.
                succession = primogeniture
                gender_succ = enatic
                law_set_allow_matrilineal_marriage = yes
            }

            set_title_flag = ggsm_magdalene_succession_established
        }

        # Apply the same law to eligible Magdalene women in the realm.
        any_realm_lord = {
            limit = {
                is_landed = yes
                is_female = yes
                religion = catholic
                society_member_of = ggsm_order_sacred_magdalene

                OR = {
                    government = feudal_government
                    government = tribal_government
                }
            }

            # A vassal's primary title must be handled explicitly for the
            # same reason as the top ruler's primary title.
            primary_title = {
                if = {
                    limit = {
                        OR = {
                            tier = COUNT
                            tier = DUKE
                            tier = KING
                            tier = EMPEROR
                        }
                    }

                    succession = primogeniture
                    gender_succ = enatic
                    law_set_allow_matrilineal_marriage = yes

                    if = {
                        limit = {
                            NOT = {
                                has_law = succ_magdalene_primogeniture
                            }
                        }

                        add_law = {
                            law = succ_magdalene_primogeniture
                            cooldown = no
                            opinion_effect = yes
                        }
                    }

                    set_title_flag = ggsm_magdalene_succession_established
                }
            }

            # Then repair only the vassal's secondary county-or-higher titles.
            any_demesne_title = {
                limit = {
                    NOT = {
                        is_primary_holder_title = yes
                    }

                    OR = {
                        tier = COUNT
                        tier = DUKE
                        tier = KING
                        tier = EMPEROR
                    }
                }

                succession = primogeniture
                gender_succ = enatic
                law_set_allow_matrilineal_marriage = yes

                if = {
                    limit = {
                        NOT = {
                            has_law = succ_magdalene_primogeniture
                        }
                    }

                    add_law = {
                        law = succ_magdalene_primogeniture
                        cooldown = no
                        opinion_effect = yes
                    }
                }

                set_title_flag = ggsm_magdalene_succession_established
            }
        }

        # Recheck the realm yearly while this ruler remains eligible.
        hidden_tooltip = {
            long_character_event = {
                id = ggsm.601
                days = 365
            }
        }
    }

    option = {
        name = ggsm.600.b

        # Local event variables expire with the event chain.
    }
}


###############################################
# 601 - ANNUAL SUCCESSION MAINTENANCE
###############################################

long_character_event = {
    id = ggsm.601
    hide_window = yes
    is_triggered_only = yes

    trigger = {
        has_character_flag = ggsm_magdalene_succession_enacted
        society_member_of = ggsm_order_sacred_magdalene
        is_landed = yes

        OR = {
            government = feudal_government
            government = tribal_government
        }
    }

    immediate = {
        # Migration-safe dynasty marker for games established under older versions.
        set_dynasty_flag = ggsm_magdalene_succession_established


        # Explicitly repair the primary title first. any_demesne_title
        # also includes it, but this prevents the primary title from
        # being left behind by title-specific law validation behavior.
        primary_title = {
            if = {
                limit = {
                    OR = {
                        tier = COUNT
                        tier = DUKE
                        tier = KING
                        tier = EMPEROR
                    }
                }

                succession = primogeniture
                gender_succ = enatic
                law_set_allow_matrilineal_marriage = yes

                if = {
                    limit = {
                        NOT = {
                            has_law = succ_magdalene_primogeniture
                        }
                    }

                    add_law = {
                        law = succ_magdalene_primogeniture
                        cooldown = no
                        opinion_effect = no
                    }
                }

                set_title_flag = ggsm_magdalene_succession_established
            }
        }

        # Keep newly acquired personal titles synchronized.
        any_demesne_title = {
            limit = {
                NOT = {
                    is_primary_holder_title = yes
                }

                OR = {
                    tier = COUNT
                    tier = DUKE
                    tier = KING
                    tier = EMPEROR
                }
            }

            if = {
                limit = {
                    NOT = {
                        has_law = succ_magdalene_primogeniture
                    }
                }

                add_law = {
                    law = succ_magdalene_primogeniture
                    cooldown = no
                    opinion_effect = no
                }

                # Enforce the actual title succession mechanics directly.
                # This is intentionally separate from add_law so a title-side
                # law-potential quirk cannot leave one held title unsynchronized.
                succession = primogeniture
                gender_succ = enatic
                law_set_allow_matrilineal_marriage = yes
            }

            set_title_flag = ggsm_magdalene_succession_established
        }

        # Keep eligible Magdalene vassal titles synchronized.
        any_realm_lord = {
            limit = {
                is_landed = yes
                is_female = yes
                religion = catholic
                society_member_of = ggsm_order_sacred_magdalene

                OR = {
                    government = feudal_government
                    government = tribal_government
                }
            }

            # A vassal's primary title must be handled explicitly for the
            # same reason as the top ruler's primary title.
            primary_title = {
                if = {
                    limit = {
                        OR = {
                            tier = COUNT
                            tier = DUKE
                            tier = KING
                            tier = EMPEROR
                        }
                    }

                    succession = primogeniture
                    gender_succ = enatic
                    law_set_allow_matrilineal_marriage = yes

                    if = {
                        limit = {
                            NOT = {
                                has_law = succ_magdalene_primogeniture
                            }
                        }

                        add_law = {
                            law = succ_magdalene_primogeniture
                            cooldown = no
                            opinion_effect = no
                        }
                    }

                    set_title_flag = ggsm_magdalene_succession_established
                }
            }

            # Then repair only the vassal's secondary county-or-higher titles.
            any_demesne_title = {
                limit = {
                    NOT = {
                        is_primary_holder_title = yes
                    }

                    OR = {
                        tier = COUNT
                        tier = DUKE
                        tier = KING
                        tier = EMPEROR
                    }
                }

                succession = primogeniture
                gender_succ = enatic
                law_set_allow_matrilineal_marriage = yes

                if = {
                    limit = {
                        NOT = {
                            has_law = succ_magdalene_primogeniture
                        }
                    }

                    add_law = {
                        law = succ_magdalene_primogeniture
                        cooldown = no
                        opinion_effect = no
                    }
                }

                set_title_flag = ggsm_magdalene_succession_established
            }
        }

        hidden_tooltip = {
            long_character_event = {
                id = ggsm.601
                days = 365
            }
        }
    }
}


###############################################
# 602 - NEW HOLDER SUCCESSION REPAIR RELAY
###############################################

# ROOT = new title holder
# FROM = title that changed holder
# FROMFROM = previous holder
#
# Abdication/inheritance fires during the title-transfer sequence.
# Queue a single repair for the following day so CK2 has finished
# establishing the new ruler's actual primary title before we touch laws.
long_character_event = {
    id = ggsm.602
    hide_window = yes
    is_triggered_only = yes

    trigger = {
        society_member_of = ggsm_order_sacred_magdalene
        society_rank >= 1
        is_landed = yes
        is_female = yes
        religion = catholic

        OR = {
            government = feudal_government
            government = tribal_government
        }

        OR = {
            has_dynasty_flag = ggsm_magdalene_succession_established

            any_dynasty_member_even_if_dead = {
                has_character_flag = ggsm_magdalene_succession_enacted
            }

            FROM = {
                OR = {
                    has_title_flag = ggsm_magdalene_succession_established
                    has_law = succ_magdalene_primogeniture
                }
            }
        }
    }

    immediate = {
        if = {
            limit = {
                NOT = {
                    has_character_flag = ggsm_magdalene_succession_repair_pending
                }
            }

            set_character_flag = ggsm_magdalene_succession_repair_pending

            long_character_event = {
                id = ggsm.603
                days = 1
            }
        }
    }
}


###############################################
# 603 - POST-SUCCESSION PRIMARY TITLE REPAIR
###############################################

long_character_event = {
    id = ggsm.603
    hide_window = yes
    is_triggered_only = yes

    trigger = {
        has_character_flag = ggsm_magdalene_succession_repair_pending
        society_member_of = ggsm_order_sacred_magdalene
        society_rank >= 1
        is_landed = yes
        is_female = yes
        religion = catholic

        OR = {
            government = feudal_government
            government = tribal_government
        }
    }

    immediate = {
        clr_character_flag = ggsm_magdalene_succession_repair_pending

        # Repair the settled primary title first.
        primary_title = {
            if = {
                limit = {
                    OR = {
                        tier = COUNT
                        tier = DUKE
                        tier = KING
                        tier = EMPEROR
                    }
                }

                succession = primogeniture
                gender_succ = enatic
                law_set_allow_matrilineal_marriage = yes

                if = {
                    limit = {
                        NOT = {
                            has_law = succ_magdalene_primogeniture
                        }
                    }

                    add_law = {
                        law = succ_magdalene_primogeniture
                        cooldown = no
                        opinion_effect = no
                    }
                }

                set_title_flag = ggsm_magdalene_succession_established
            }
        }

        # Then repair only secondary county-or-higher titles.
        any_demesne_title = {
            limit = {
                NOT = {
                    is_primary_holder_title = yes
                }

                OR = {
                    tier = COUNT
                    tier = DUKE
                    tier = KING
                    tier = EMPEROR
                }
            }

            succession = primogeniture
            gender_succ = enatic
            law_set_allow_matrilineal_marriage = yes

            if = {
                limit = {
                    NOT = {
                        has_law = succ_magdalene_primogeniture
                    }
                }

                add_law = {
                    law = succ_magdalene_primogeniture
                    cooldown = no
                    opinion_effect = no
                }
            }

            set_title_flag = ggsm_magdalene_succession_established
        }

        # Repair eligible Magdalene vassals after the new ruler's succession
        # has fully settled. Their primary titles are handled separately too.
        any_realm_lord = {
            limit = {
                is_landed = yes
                is_female = yes
                religion = catholic
                society_member_of = ggsm_order_sacred_magdalene

                OR = {
                    government = feudal_government
                    government = tribal_government
                }
            }

            primary_title = {
                if = {
                    limit = {
                        OR = {
                            tier = COUNT
                            tier = DUKE
                            tier = KING
                            tier = EMPEROR
                        }
                    }

                    succession = primogeniture
                    gender_succ = enatic
                    law_set_allow_matrilineal_marriage = yes

                    if = {
                        limit = {
                            NOT = {
                                has_law = succ_magdalene_primogeniture
                            }
                        }

                        add_law = {
                            law = succ_magdalene_primogeniture
                            cooldown = no
                            opinion_effect = no
                        }
                    }

                    set_title_flag = ggsm_magdalene_succession_established
                }
            }

            any_demesne_title = {
                limit = {
                    NOT = {
                        is_primary_holder_title = yes
                    }

                    OR = {
                        tier = COUNT
                        tier = DUKE
                        tier = KING
                        tier = EMPEROR
                    }
                }

                succession = primogeniture
                gender_succ = enatic
                law_set_allow_matrilineal_marriage = yes

                if = {
                    limit = {
                        NOT = {
                            has_law = succ_magdalene_primogeniture
                        }
                    }

                    add_law = {
                        law = succ_magdalene_primogeniture
                        cooldown = no
                        opinion_effect = no
                    }
                }

                set_title_flag = ggsm_magdalene_succession_established
            }
        }

        set_character_flag = ggsm_magdalene_succession_enacted
        set_dynasty_flag = ggsm_magdalene_succession_established

        hidden_tooltip = {
            long_character_event = {
                id = ggsm.601
                days = 365
            }
        }
    }
}
